/**
 * 数据库配置
 */
const mongoose = require('mongoose');

/**
 * 连接MongoDB数据库
 * @param {Object} config - 配置对象
 * @returns {Promise} 连接Promise
 */
const connectDatabase = async (config) => {
  try {
    const { mongoUri } = config;
    
    // 连接数据库
    // Mongoose 6.0.0+ 已默认启用新解析器和统一拓扑，不再需要额外选项
    await mongoose.connect(mongoUri);
    
    console.log('🌿 MongoDB数据库连接成功');
    
    // 监听连接事件
    mongoose.connection.on('error', (err) => {
      console.error('MongoDB连接错误:', err);
    });
    
    mongoose.connection.on('disconnected', () => {
      console.warn('MongoDB连接断开，尝试重新连接...');
      setTimeout(() => connectDatabase(config), 5000);
    });
    
    return mongoose.connection;
  } catch (error) {
    console.error('MongoDB连接失败:', error);
    // 不要在这里终止进程，而是抛出错误让调用者处理
    throw error;
  }
};

module.exports = {
  connectDatabase
}; 